When developing new integrated circuit devices having embedded processors or controllers (also known as microprocessors or microcontrollers), there is a need to provide a debug environment whereby the device can be exercised by microcode execution, and the resulting device status, signaling and control can be monitored. It is also desirable to be able to monitor or trace the execution flow of instructions that are executed by the processor or controller. These debug capabilities are sometimes called emulation or microcode emulation.
Many of today's microprocessor emulators provide a control console or debugging terminal that is cabled to a specially designed controller or processor that has numerous additional I/O pins that allow the internal control signals of the controller or CPU to be brought outside of the integrated circuit device for monitoring by the debug tool. This specially instrumented controller/CPU is then plugged into a printed circuit board for the subsystem that the controller/CPU is controlling, and the controller/CPU can be controlled by a user using the control console to load code for execution, set breakpoints and trace the control flow and memory/register contents of the controller/CPU.
As technologies have emerged, these printed circuit board subsystems are now being integrated into integrated circuit devices, such that the entire system or subsystem is now contained within a single integrated circuit (IC) device. These systems/subsystems are sometimes called system-on-a-chip or SOC. The controllers/CPUs inside these types of integrated circuit devices are commonly referred to as embedded controllers. When the integrated circuit device is still in the early stages of design, where the design has not be totally completed and is still being debugged, these SOC IC devices also have additional I/O pins added—similar to the printed circuit board environment—in order to allow observation of internal signals to provide improved debugging capabilities. Most embedded processor debugging systems provide these multitude of I/O signals from the embedded processor to the debug console or workstation in a parallel data stream in order to maintain adequate bandwidth in data transfer from the embedded controller to the console/workstation. However, this results in a large number of additional I/O pins being added to the IC device to support such debugging, increasing the resulting size, and thus cost, of the IC device.
Some systems are now being developed that provide a serial interface from the integrated circuit device to the debug console/workstation. However, these serial debug port systems suffer from the inherent slow down of data transfer/throughput that results when going from a parallel interface (which has many signal paths and thus is inherently faster) to a serial interface (which has fewer signal paths and thus is inherently slower). These types of serial debug port systems cannot support real time emulation of embedded processors that are operating at a high clock rate.
It would thus be desirable to provide a system and method for providing a debugging environment that uses a high speed serial interface to provide a debug interface between an IC device being debugged and a control console/workstation such that the IC device can run at its normal, high speed, thereby enabling real time emulation of an SOC device having a serial debug port.
The present invention provides a solution to this and other problems, and offers other advantages over previous solutions.